/*
 * Projet Java / UML -- Trombinoscope - Février / Mars 2012
 * Virginie Messe -- William Huber
 */
package mvc_model;

import outils.PersonneDAO;
import outils.PromotionDAO;

/**
 *
 * @author Virginie
 */
public class Administrateur extends Personne {

    public Administrateur( int id, String nom, String prenom, String telephone, String adresse, String codePostal, String ville, String email, String cheminPhoto, int accessLevel, String login, String password, String dateNaissance, String sexe, Promotion promotion) {
        super(id, nom, prenom, telephone, adresse, codePostal, ville, email, cheminPhoto, accessLevel, login, password, dateNaissance, sexe, promotion);
    }

    public Administrateur() {
    }

    
    /**
     * 
     * @param p La nouvelle personne à ajouter à la base <br/>
     * 
     * requires <br/>
     *      p non nul <br/>
     *      accessLevel = al_Administrateur <br/>
     * ensures <br/>
     * 
     */
    public void createPersonne(Personne p) {
        assert (this.getAccessLevel() == al_Administrateur);
        assert (p != null);
        
        PersonneDAO persDAO = new PersonneDAO();
        persDAO.create(p);
    }
    
    /**
     * 
     * @param p La personne à mettre à jour dans la base <br/>
     * 
     * requires <br/>
     *      p non nul <br/>
     *      accessLevel = al_Administrateur <br/>
     * ensures <br/>
     * 
     */
    public void updatePersonne(Personne p) {
        assert (this.getAccessLevel() == al_Administrateur);
        assert (p != null);
        
        PersonneDAO persDAO = new PersonneDAO();
        persDAO.update(p);
    }
    
    /**
     * 
     * @param idPromotion L'id de la personne à supprimer dans la base <br/>
     * 
     * requires <br/>
     *      idPersonne > 0 <br/>
     *      accessLevel = al_Administrateur <br/>
     * ensures <br/>
     * 
     */
    public void deletePersonne(int idPersonne) {
        assert (this.getAccessLevel() == al_Administrateur);
        assert (idPersonne > 0);
        
        PersonneDAO persDAO = new PersonneDAO();
        persDAO.delete(idPersonne);
    }
    
    /**
     * 
     * @param p La nouvelle promotion à ajouter à la base <br/>
     * 
     * requires <br/>
     *      p non nul <br/>
     *      accessLevel = al_Administrateur <br/>
     * ensures <br/>
     * 
     */
    public void createPromotion(Promotion p) {
        assert (this.getAccessLevel() == al_Administrateur);
        assert (p != null);
        
        PromotionDAO promDAO = new PromotionDAO();
        promDAO.create(p);
    }
    
    /**
     * 
     * @param p La promotion à mettre à jour dans la base <br/>
     * 
     * requires <br/>
     *      p non nul <br/>
     *      accessLevel = al_Administrateur <br/>
     * ensures <br/>
     * 
     */
    public void updatePromotion(Promotion p) {
        assert (this.getAccessLevel() == al_Administrateur);
        assert (p != null);
        
        PromotionDAO promDAO = new PromotionDAO();
        promDAO.update(p);
    }
    
    /**
     * 
     * @param idPromotion L'id de la promotion à supprimer de la base <br/>
     * 
     * requires <br/>
     *      idPromotion > 0 <br/>
     *      accessLevel = al_Administrateur <br/>
     * ensures <br/>
     * 
     */
    public void deletePromotion(int idPromotion) {
        assert (this.getAccessLevel() == al_Administrateur);
        assert (idPromotion > 0);
        
        PromotionDAO promDAO = new PromotionDAO();
        promDAO.delete(idPromotion);
    }
    
}
